perm filename CORMON[SS,SYS]3 blob sn#542208 filedate 1980-10-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	PHYMEM NNXMP NMAPP A B C D E M N T TT TTT W X Y Z P RECOMP GO CORTB1 DECOUT DECOU0 DECOU1 OCTOUT OCTOU1 SYMGET SYMGT1 SYMNAM NSYMS SYMADR AFSBUSY ASYSTOP AFSTOP ACORMAX NSYPGS ACORTAB FSBUSY SYSTOP FSTOP CORMAX CORTAB PDL FREE SYS USER NXM FS IO MAP P2M
C00010 ENDMK
C⊗;
;PHYMEM NNXMP NMAPP A B C D E M N T TT TTT W X Y Z P RECOMP GO CORTB1 DECOUT DECOU0 DECOU1 OCTOUT OCTOU1 SYMGET SYMGT1 SYMNAM NSYMS SYMADR AFSBUSY ASYSTOP AFSTOP ACORMAX NSYPGS ACORTAB FSBUSY SYSTOP FSTOP CORMAX CORTAB PDL FREE SYS USER NXM FS IO MAP P2M

TITLE CORMON

;CORTAB ENTRY VALUES
;	0	Block is available.
;	1-7777	Block is in use by the job named in this code
↑SYSCUS←←400001	;Block is occupied bt the system
↑NXMCUS←←400003	;Block does not exist (NXM)
↑FSCUS←← 400005	;Block is in use by system as free storage.
↑IOBCUS←←400007	;Block is in use as an I/O buffer (SYSBUF for example)
↑PGTCUS←←400010	;Block is in use as a page table (not as free storage)
↑P2MCUS←←400011	;Block is part of P2 memory

PHYMEM←←14400		;TOTAL NUMBER OF PHYSICAL PAGES IN SYSTEM
NNXMP←←3400		;TOTAL NUMBER OF NXM PAGES IN SYSTEM
JOBN←←=80		;Max number of jobs
NMAPP←←JOBN-1		;TOTAL NUMBER OF MAP PAGES IN SYSTEM

A←1
B←2
C←3
D←4
E←5
M←6
N←7
T←10
TT←11
TTT←12
W←13
X←14
Y←15
Z←16
P←17

RECOMP:	OUTSTR [ASCIZ/JOBN has changed.  Fix it in CORMON's source and recompile./]
	EXIT

GO:	RESET
	MOVE P,[-100,,PDL-1]
	MOVSI A,377777
	SETPR2 A,
	JRST 4,.
	MOVE A,400222		;Get JOBN-1 from system lowcore
	CAIE A,JOBN-1		;Better be what we expect
	JRST RECOMP		;Must alter and recompile
	PUSHJ P,SYMGET
	MOVE A,@AFSBUSY
	MOVEM A,FSBUSY
	MOVE A,@ASYSTOP
	MOVEM A,SYSTOP
	MOVE A,@AFSTOP
	MOVEM A,FSTOP
	MOVE A,@ACORMAX
	MOVEM A,CORMAX
	MOVS A,ACORTAB
	HRRI A,CORTAB
	BLT A,CORTAB+PHYMEM-1		;COPY CORTAB TABLE
	OUTSTR [ASCIZ /		       SYSTOP = /]
	MOVE T,SYSTOP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
			FSTOP = /]
	MOVE T,FSTOP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		   Low FSBUSY = /]
	MOVE T,FSBUSY
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ/
		  Low FS free = /]
	MOVE T,FSTOP
	SUB T,SYSTOP
	SUB T,FSBUSY
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
  FSTOP-SYSTOP (Low FS total) = /]
	MOVE T,FSTOP
	SUB T,SYSTOP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
       Number of SYSBUF pages = /]
	MOVE T,NSYPGS
	PUSHJ P,DECOUT
	SETZM FREE
	SETZM SYS
	SETZM USER
	SETZM NXM
	SETZM FS
	SETZM IO
	SETZM MAP
	SETZM P2M
	MOVSI T,-PHYMEM
CORTB1:	LDB A,[POINT 18,CORTAB(T),35]
	SKIPN A
	AOS FREE
	CAIN A,SYSCUS
	AOS SYS
	CAILE A,0
	CAIL A,JOBN
	CAIA
	AOS USER
	CAIN A,NXMCUS
	AOS NXM
	CAIN A,FSCUS
	AOS FS
	CAIN A,IOBCUS
	AOS IO
	CAIN A,PGTCUS
	AOS MAP
	CAIN A,P2MCUS
	AOS P2M
	AOBJN T,CORTB1
	OUTSTR [ASCIZ /
		 System pages = /]
	MOVE T,SYS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		     FS pages = /]
	MOVE T,FS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		    NXM pages = /]
	MOVE T,NXM
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		    MAP pages = /]
	MOVE T,MAP
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
	      IO buffer pages = /]
	MOVE T,IO
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ/
	      P2 memory pages = /]
	MOVE T,P2M
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		   Free pages = /]
	MOVE T,FREE
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		   User pages = /]
	MOVE T,USER
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		  Total pages = /]
	MOVE T,FREE
	ADD T,P2M
	ADD T,SYS
	ADD T,MAP
	ADD T,FS
	ADD T,NXM
	ADD T,IO
	ADD T,USER
	PUSH P,T
	PUSHJ P,DECOUT
	POP P,T
	OUTSTR [ASCIZ / = /]
	LSH T,9
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
Available user core should be = /]
	MOVEI T,PHYMEM		;TOTAL NUMBER OF PAGES IN SYSTEM
	MOVE TT,SYSTOP
	LSH TT,-9
	SUB T,TT		;SUBTRACT SYSTEM PAGES
	SUB T,NSYPGS		;SUBTRACT SYSBUF PAGES
	SUBI T,NNXMP+NMAPP	;SUBTRACT OUT NXM PAGES AND PAGE MAP PAGES
	SUB T,P2M		;SUBTRACT P2 CORE
	SUB T,FS		;SUBTRACT LOW AND HI FS
	PUSHJ P,DECOUT
	OUTSTR [ASCIZ /
		       CORMAX = /]
	MOVE T,CORMAX
	LSH T,-9
	PUSHJ P,DECOUT
	OUTSTR [BYTE (7)15,12]
	EXIT

DECOUT:	PUSH P,T
	PUSHJ P,DECOU0
	OUTSTR [ASCIZ /. (/]
	POP P,T
	PUSHJ P,OCTOUT
	OUTCHR [")"]
	POPJ P,

DECOU0:	IDIVI T,=10
	JUMPE T,DECOU1
	HRLM TT,(P)
	PUSHJ P,DECOU0
	HLRZ TT,(P)
DECOU1:	ADDI TT,"0"
	OUTCHR TT
	POPJ P,

OCTOUT:	IDIVI T,10
	JUMPE T,OCTOU1
	HRLM TT,(P)
	PUSHJ P,OCTOUT
	HLRZ TT,(P)
OCTOU1:	ADDI TT,"0"
	OUTCHR TT
	POPJ P,

SYMGET:	MOVSI T,-NSYMS
SYMGT1:	MOVE B,SYMNAM(T)
	TLZ B,740000
	MOVEI C,0
	MOVEI A,B
	.SYML A,
	JRST 4,.
	MOVE B,SYMNAM(T)
	TLNN B,40000
	ADDI A,400000
	MOVEM A,SYMADR(T)
	AOBJN T,SYMGT1
	POPJ P,

SYMNAM:	RADIX50 0,FSBUSY
	RADIX50 0,SYSTOP
	RADIX50 0,FSTOP
	RADIX50 0,CORMAX
	RADIX50 4,NSYPGS
	RADIX50 0,CORTAB
NSYMS←←.-SYMNAM

SYMADR::
AFSBUSY:0
ASYSTOP:0
AFSTOP:	0
ACORMAX:0
NSYPGS:	0
ACORTAB:0

FSBUSY:	0
SYSTOP:	0
FSTOP:	0
CORMAX:	0
CORTAB:	BLOCK PHYMEM

PDL:	BLOCK 100
FREE:	0
SYS:	0
USER:	0
NXM:	0
FS:	0
IO:	0
MAP:	0
P2M:	0

	END GO